<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // var arr1 = [1,4,3,8,10,19];
        // var arr2 = arr1; // 这个叫赋值 不叫拷贝 
        // console.log(arr2);
        // // 方法1 

        // var newarr = [];
        // for(let i=0;i<arr1.length;i++){
        //         newarr.push(arr1[i]);   
        // }
        // console.log(newarr);


        // // 方法2

        // var data = [].concat(arr1);
        // console.log(data);


        // // 方法3 
        // var data2 = arr1.slice(0);
        // console.log(data2);


        // var arr1 = [1,4,3,8,10,19,[66,77,88]];
        // var arr2 = arr1; // 这个叫赋值 不叫拷贝 
        // console.log(arr2);
        // // 方法1 

        // var newarr = [];
        // for(let i=0;i<arr1.length;i++){
        //         newarr.push(arr1[i]);   
        // }
        // console.log(newarr);


        // // 方法2

        // var data = [].concat(arr1);
        // console.log(data);


        // // 方法3 
        // var data2 = arr1.slice(0);
        // console.log(data2);

        // arr2 是赋值   
        // newarr 
        // data 
        // data2  
        // 上面三个是拷贝  
        // 如果只拷贝第一层  第二层  arr1 arr2 newarr data data2 指向的是同一个地址 
        // 说明第二层没有拷贝   
        // 这就是浅拷贝  


        // 上面三个复制数组的方法  他们属于浅拷贝  
        // 新增一个浅拷贝的方法 
        // Object.assign(新对象,原始对象);
        // 把原始对象的成员浅拷贝新对象内 

        // var obj = {name:'洪康',age:19,info:{height:'181cm',weight:'100kg'}};

        // var xiaohongkang = Object.assign({},obj);
        // console.log(xiaohongkang);

        // obj['age'] = 20;
        // console.log(xiaohongkang); // 第一层各自独立 修改没影响 
        // obj['info']['weight'] = 105;
        // console.log(xiaohongkang); 



        // 什么是深拷贝 
        // 数组 对象 不管几层  每一层各自独立 这就是深拷贝 
        // 没有现成的方法  
        // 自己写  
        // 递归 
    </script>
</body>
</html>